package kara;

import java.util.HashSet;
import java.util.List;
import java.util.Scanner;

public class A104 {
    static int n;
    static int m;
    static int[][] map;//地图
    static int[][] vis;//标记

    //对于第一个岛屿，标记为1
    //对于第i个岛屿，标记为i
    //存储每个岛屿的陆地数
    static int[] num;
    static int visited=1;
    static int res=0;
    static int[] dir1={1,0,-1,0};
    static int[] dir2={0,1,0,-1};
static int word=0;
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        n=sc.nextInt();
        m= sc.nextInt();
        map=new int[n][m];
        vis=new int[n][m];
        num=new int[n*m/2+5];
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                map[i][j]=sc.nextInt();
            }
        }
        //统计每个岛屿大小，并且提供根据岛屿某个点的标记获得岛屿大小的数据结构
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
if(map[i][j]==1&&vis[i][j]==0)
{
    res=1;//统计岛屿的大小，先把这个点算进去为1，
    vis[i][j]=visited;//标记
    dfs(i,j);
    num[visited]=res;//可以同个标记获取岛屿大小
    visited++;//区分不同岛屿的标记，所以++
}
            }

        }
        //好了，我们统计了各个岛屿的大小了
        //我们来遍历海水
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(map[i][j]==0){
                    int temp=1;//将海水变为陆地，所以他的
                    //枚举四周获得不同的陆地加起来
                    HashSet<Integer> hashSet=new HashSet<>();
                    for(int k=0;k<4;k++){
                        int a=i+dir1[k];
                        int b=j+dir2[k];
                        //如果是陆地，获取岛屿编号
                     if(a>=0&&a<n&&b>=0&&b<m&&map[a][b]==1) hashSet.add(vis[a][b]);
                    }
                    for (Integer size : hashSet) {
                       temp+= num[size];
                    }
                    //更新答案
                    word=word>=temp?word:temp;
                }
            }
        }
        if(word==0)word=num[1];//说明没有海水，只有一座岛
        System.out.println(word);

    }
    static void dfs(int x,int y){

        for(int i=0;i<4;i++){
            int a=x+dir1[i];
            int b=y+dir2[i];
            if(a>=0&&a<n&&b>=0&&b<m&&map[a][b]==1&&vis[a][b]==0)//合法未搜索岛屿
            {
                res++;
                vis[a][b]=visited;
                dfs(a,b);
            }
        }

    }

}
